package metier;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import persistence.dao.TacheDAO;
import persistence.model.Personne;
import persistence.model.Tache;
import presentation.beans.PersonneBean;
import presentation.beans.TacheBean;

/**
 * @author Ben
 * 
 */
public class TacheAction {

	/**
	 * 
	 */
	TacheDAO tacheDAO = TacheDAO.getInstance();

	/**
	 * @param tacheBean
	 */
	public void delete(final TacheBean tacheBean) {
		Tache tache = beanToTache(tacheBean);
		tacheDAO.delete(tache);
	}

	/**
	 * @param tacheBean
	 * @return
	 */
	public TacheBean create(final TacheBean tacheBean) {
		Tache tache = tacheDAO.create(beanToTache(tacheBean));
		return TacheToBean(tache);
	}

	/**
	 * @param tacheBean
	 * @return
	 */
	public static Tache beanToTache(final TacheBean tacheBean) {
		Tache tache = new Tache();
		tache.setCommentaireTache(tacheBean.getCommentaireTache());
		tache.setDebutTache(tacheBean.getDebutTache());
		tache.setFinTache(tacheBean.getFinTache());
		tache.setIdTache(tacheBean.getIdTache());
		tache.setNomTache(tacheBean.getNomTache());
		tache.setStatutTache(tacheBean.getStatutTache());
		tache.setProjet(ProjetAction.simpleBeanToProjet(tacheBean.getProjet()));
		Set<Personne> personne = new HashSet<Personne>();
		List<PersonneBean> personnes = new ArrayList<PersonneBean>(
				tacheBean.getPersonne());
		for (PersonneBean person : personnes)
			personne.add(PersonneAction.simpleBeanToPersonne(person));
		tache.setPersonne(personne);
		return tache;
	}

	/**
	 * @param tache
	 * @return
	 */
	public static TacheBean TacheToBean(final Tache tache) {
		TacheBean tacheBean = new TacheBean();
		tacheBean.setCommentaireTache(tache.getCommentaireTache());
		tacheBean.setDebutTache(tache.getDebutTache());
		tacheBean.setFinTache(tache.getFinTache());
		tacheBean.setIdTache(tache.getIdTache());
		tacheBean.setNomTache(tache.getNomTache());
		tacheBean.setStatutTache(tache.getStatutTache());
		tacheBean.setProjet(ProjetAction.projetToSimpleBean(tache.getProjet()));
		List<Personne> personne = new ArrayList<Personne>(tache.getPersonne());
		List<PersonneBean> personnes = new ArrayList<PersonneBean>();
		for (Personne person : personne)
			personnes.add(PersonneAction.personneToSimpleBean(person));
		tacheBean.setPersonne(personnes);
		return tacheBean;
	}

	/**
	 * @param tacheBean
	 */
	public void update(final TacheBean tacheBean) {
		tacheDAO.update(beanToTache(tacheBean));
	}

}
